package com.ruoyi.demowechatpay.pojo.vo;

import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * MyTransferCreateResult
 *
 * @author huajiao
 * @date 2025/3/27 10:26
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class MyTransferCreateResult implements Serializable {
    private static final long serialVersionUID = 586974090302358983L;
    /**
     * <pre>
     * 字段名：商户单号
     * 变量名：out_bill_no
     * 是否必填：是
     * 类型：string[1,32]
     * 描述：
     *  商户系统内部的商家单号，要求此参数只能由数字、大小写字母组成，在商户系统内部唯一
     * 示例值：plfk2020042013
     * </pre>
     */
    @SerializedName("out_bill_no")
    private String outBillNo;

    /**
     * <pre>
     * 字段名：微信转账单号
     * 变量名：transfer_bill_no
     * 是否必填：是
     * 类型：string[1,32]
     * 描述：
     *  微信转账单号，微信商家转账系统返回的唯一标识
     * 示例值：1030000071100999991182020050700019480001
     * </pre>
     */
    @SerializedName("transfer_bill_no")
    private String transferBillNo;

    /**
     * <pre>
     * 字段名：批次创建时间
     * 变量名：create_time
     * 是否必填：否
     * 类型：string[1,32]
     * 描述：
     *  批次受理成功时返回，遵循rfc3339标准格式，格式为yyyy-MM-DDTHH:mm:ss.sss+TIMEZONE，yyyy-MM-DD表示年月日，T出现在字符串中，表示time元素的开头，HH:mm:ss.sss表示时分秒毫秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。例如：2015-05-20T13:29:35.120+08:00表示北京时间2015年05月20日13点29分35秒
     * 示例值：2015-05-20T13:29:35.120+08:00
     * </pre>
     */
    @SerializedName("create_time")
    private String createTime;

    /**
     * 商家转账订单状态
     * 说明：
     *
     * ACCEPTED: 转账已受理
     *
     * PROCESSING: 转账锁定资金中。如果一直停留在该状态，建议检查账户余额是否足够，如余额不足，可充值后再原单重试。
     *
     * WAIT_USER_CONFIRM: 待收款用户确认，可拉起微信收款确认页面进行收款确认
     *
     * TRANSFERING: 转账中，可拉起微信收款确认页面再次重试确认收款
     *
     * SUCCESS: 转账成功
     *
     * FAIL: 转账失败
     *
     * CANCELING: 商户撤销请求受理成功，该笔转账正在撤销中
     *
     * CANCELLED: 转账撤销完成
     */
    @SerializedName("state")
    private String state;

    /**
     * 【失败原因】 订单已失败或者已退资金时，会返回订单失败原因
     */
    @SerializedName("fail_reason")
    private String failReason;

    /**
     * 【跳转领取页面的package信息】 跳转微信支付收款页的package信息，APP调起用户确认收款或者JSAPI调起用户确认收款 时需要使用的参数。
     *
     * 单据创建后，用户24小时内不领取将过期关闭，建议拉起用户确认收款页面前，先查单据状态：如单据状态为待收款用户确认，可用之前的package信息拉起；单据到终态时需更换单号重新发起转账。
     */
    @SerializedName("package_info")
    private String packageInfo;
}

